package cn.lingyangwl.agile.misc.statistic.annotation;

import cn.lingyangwl.agile.model.enums.*;

import java.lang.annotation.*;

/**
 * 统计实体配置, 用于标注在实体类上
 *
 * @author shenguangyang
 */
@Target({ElementType.PARAMETER, ElementType.TYPE})
@Retention(RetentionPolicy.RUNTIME)
@Documented
public @interface StatisticEntityConfig {
    /**
     * 分组字段
     * <ol>
     * 比如现在有支付宝小程序和微信小程序终端类型
     * <p>
     * 在统计时候, 需要按照终端类型进行实时统计, 那么在存入缓存中时候, cacheKey = xxx:分组字段:memberRegister (统计会员注册人数)
     * 当实时同步到数据库时候, 就会生成两条数据
     * <p>
     * a. 微信小程序  会员注册人数   2024-01-17 <br/>
     * b. 支付宝小程序 会员注册人数  2024-01-17
     * <ol/
     * @return 分组字段集合
     */
    GroupField value() default @GroupField(name = "", value = Default.class);

    enum Default implements BaseStatGroupField {
        ;

        @Override
        public String getValue() {
            return "";
        }

        @Override
        public String getName() {
            return "";
        }
    }
}
